// 导入路由
import router from '@/router'
// 导入vuex
import store from '@/store'
// 导入进度条
import NProgress from 'nprogress'
// 导入进度条样式
import 'nprogress/nprogress.css'
router.beforeEach((to, from, next) => {
  // 取消所有axios请求
  window.cancelAll()
  NProgress.start()
  // 获取vuex中的getter的值
  const token = store.getters.token
  // 设置白名单
  let whitePage = ['/login', '/404']
  // 判断页面是否存在token（是否处于登录状态）
  if (!token) {
    // 判断要跳转的页面是否需要token
    if (whitePage.includes(to.path)) {
      next()
    } else {
      next('/login?redirect=' + to.fullPath)
    }
  } else {
    // 判断是否在登录页
    if (to.path === '/login') {
      next('/')
    } else {
      // 不在登录页
      // 判断是否是登陆状态
      if (store.getters.isLogin) {
        next()
      } else {
        // 没有登录 也就是vuex里没有保存用户信息
        store.dispatch('user/getUser') // 调用方法获取用户信息并保存
        next()
      }
    }
  }
  // next()
  NProgress.done()
})
router.afterEach((to, from) => {
  NProgress.done()
})
